package com.lucker.common.util;

import java.util.ArrayList;
import java.util.Set;
import java.util.TreeSet;

import org.apache.commons.lang3.StringUtils;

public class RecommendUtil {
	
	public static String getStrByArray(ArrayList<String> code) {
		String str = "";
		for(int i = 0 ; i < code.size() ; i++) {
			str = str + code.get(i) + "-";
		}
		if(StringUtils.isNotBlank(str)) {
			str = str.substring(0, (str.length()-1) );
		}
		return str;
	}
	
	public static int getRandomNum(int max) {
		return (int) (Math.random() * max) + 1;
	}
	
	/***
	 * 11选5推荐算法，该算随即产生，后面会重构该算法，加上往期中奖号码权重,这种算法应该比下面两种算法效率高一些，不需要撞库，进行去重.
	 * @return 
	 */
	public static ArrayList<String> genCode1() {
		ArrayList<String> code = new ArrayList<String>();
		ArrayList<Integer> pool = new ArrayList<Integer>();
		pool.add(1);
		pool.add(2);
		pool.add(3);
		pool.add(4);
		pool.add(5);
		pool.add(6);
		pool.add(7);
		pool.add(8);
		pool.add(9);
		pool.add(10);
		pool.add(11);
		for(int i = 0 ; i < 8 ; i++) {
			int index = (int) (Math.random() * pool.size());
			if(pool.get(index) < 10) {
				code.add(pool.get(index) < 10 ? "" + pool.get(index) : pool.get(index)+"");
			}
			pool.remove(index);
		}
		return code;
	}
	
	/***
	 * 随机生成双色球，最后一位为 ： 蓝球
	 * @return
	 */
	public static ArrayList<String> genCode2() {
		ArrayList<String> code = new ArrayList<String>();
//		while(true){
//			int sui = (int) (Math.random() * 33) + 1;// 获取33以内的数字 
//			code.add(sui<10?"0"+sui:""+sui);
//			if (code.size() == 6) {//存满六个红色球，则结束循环
//				break;
//			}
//		}
//		
//		int sui2 = (int) (Math.random() * 16) + 1;// 获取16以内的数字
//		code.add(sui2<10?"0"+sui2:""+sui2);

		while(true) {
			if(code.size() == 6) {
				break;
			}
			int tb = getRandomNum(33);
			String n = (tb < 10) ? ("0" + tb) : (tb + "");
			while(code.contains(n)) {
				   tb = getRandomNum(33);
				   n = tb < 10 ? "0" + tb : tb+"";
			}
			code.add(n);			
		}
		int lan = getRandomNum(16);
		code.add(lan < 10 ? "0" + lan : lan+"");
		
		
		
		
		
		
		
		return code;
	}
	
	/***
	 * 生成随机大乐透，前五位为红球，后两位为 篮球
	 * 红球1-35 生成5个不重复
	 * 篮球1-12 生成2个不重复
	 * 红蓝可以重复
	 * @return
	 */
	public static ArrayList<String> genCode3() {
		ArrayList<String> code = new ArrayList<String>();

		while(true) {
			if(code.size() == 5) {
				break;
			}
			int tb = getRandomNum(35);
			String n = (tb < 10) ? ("0" + tb) : (tb + "");
			while(code.contains(n)) {
				   tb = getRandomNum(35);
				   n = tb < 10 ? "0" + tb : tb+"";
			}
			code.add(n);			
		}
		
		ArrayList<String> code1 = new ArrayList<String>();
		
		while(true) {
			if(code.size() == 7) {
				break;
			}
			int tb = getRandomNum(12);
			String n = (tb < 10) ? ("0" + tb) : (tb + "");
			while(code1.contains(n)) {//用code1 为了让 红蓝可重复，蓝蓝不重复
				   tb = getRandomNum(12);
				   n = tb < 10 ? "0" + tb : tb+"";
			}
			code.add(n);
			code1.add(n);
		}
		return code;
	}
	
	
	
	
			
	public static void main(String[] args) {
//		System.out.println(getStrByArray(genCode1()));
		
		
		System.out.println(getStrByArray(genCode2()));
		
		
		System.out.println(getStrByArray(genCode3()));
		
	}
}
